/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.unam.fciencias.ActividadesCulturales.services.DAO;

import java.util.List;
import mx.unam.fciencias.actividadesculturales.entidades.db.Espacio;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.criterion.Projections;
import org.hibernate.transform.Transformers;

/**
 * Capa de datos de la entidad espacio.
 * @author lumartin
 */
public class EspacioDAO extends GenericDAO {

    /**
     * Obtiene los espacios a partir de su nombre o tipo.
     * @param nombreOtipo de los espacios.
     * @return la lista de los espacios.
     */
    public List<Espacio> getEspacios(String nombreOtipo) {
        
        Session session = super.getSesionDAO();
        Criteria crit = session.createCriteria(Espacio.class)
                .setProjection(Projections.distinct(Projections.projectionList()
            .add(Projections.property("id_espacio"), "id_espacio")
            .add(Projections.property("nomb_esp"), "nomb_esp")
        )).setResultTransformer(Transformers.aliasToBean(Espacio.class));

        if (nombreOtipo == null) {
            nombreOtipo = "";
        }
//        crit.add(Restrictions.or(Restrictions.eq("nomb_esp", nombreOtipo),
//                Restrictions.ilike("capacidad", nombreOtipo,
//                    MatchMode.ANYWHERE)));
        return crit.list();
    }

    /**
     * Obtiene un espacio a partir de su identificador.
     * @param id_espacio el identificador del espacio.
     * @return el espacio.
     */
    public Espacio getEspacio(Integer id_espacio) {
        return (Espacio) super.getById(Espacio.class, id_espacio);
    }

    /**
     * Guarda o actualiza un espacio.
     * @param espacio a guardar.
     * @return true si se guardo correctamente false si no.
     */
    public boolean guardar(Espacio espacio) {
        return super.guardar(espacio);
    }
}
